GORM系列之创建数据 您所在的位置:网站首页 gorm update 传map GORM系列之创建数据

GORM系列之创建数据

2024-06-09 08:09| 来源: 网络整理| 查看: 265

一、基本创建 (一)单条数据创建  模型表 type Base struct { ID int Name string Age int } 方法一 通过数据的指针来创建 base := Base{Name: "lily", Age: 18} result := db.Create(&base) //通过数据指针进行创建 fmt.Println(result.Error) // 返回 error fmt.Println(result.RowsAffected) // 返回插入记录的条数 方法二 根据 Map 创建 db.Model(&Base{}).Create(map[string]interface{}{ "Name": "kiki", "Age": 20, }) (二)批量创建 方法一 通过数据的指针来创建

要有效地插入大量记录,请将一个 slice 传递给 create方法。 GORM 将生成单独一条SQL语句来插入所有数据,并回填主键的值,钩子方法也会被调用。

var baseUsers = []Base{ { Name: "kiki", Age: 20, }, { Name: "wan", Age: 22, }, } db.Create(&baseUsers) // 创建多条记录 for _, user := range baseUsers { fmt.Println(user.ID) //回填主键的值 }

使用 CreateInBatches分批创建时,你可以指定每批的数量

var baseUsers = []Base{ { Name: "kiki", Age: 20, }, { Name: "wan", Age: 22, }, ... } db.CreateInBatches(&baseUsers, 100) // 每次插入100条 方法二 根据Map创建 db.Model(&Base{}).Create([]map[string]interface{}{ { "Name": "kiki", "Age": 20, }, { "Name": "wan", "Age": 22, }, }) 二、创建进阶 (一)指定字段创建 // 创建记录并更新给出的字段 baseUser := Base{Name: "lily", Age: 18} //db.Select("Name", "Age").Create(&baseUser) // INSERT INTO `Base` (`name`,`age`) VALUES ("lily", 18) // 创建一个记录且一同忽略传递给略去的字段值, 此时Name取默认值为空 db.Omit("Name").Create(&baseUser) // INSERT INTO `Base` (`age`) VALUES (18) (二)关联创建

 如果一个模型嵌套另一个模型,那么怎么创建数据呢?

模型表 type Base struct { ID int Name string Age int `gorm:"default:20"` //指定默认值为20 } type User struct { Base Base `gorm:"embedded;embeddedPrefix:base_"` NickName string } 创建 // 关联创建, 如果没写字段使用默认值创建 db.Create(&User{ NickName: "小花", Base: Base{ Name: "xiaohua", }, })

也可以通过 Select、 Omit 跳过关联保存,例如:

db.Omit("Base").Create(&User) // 跳过所有关联 db.Omit(clause.Associations).Create(&User)

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有